// 为什么需要npm  node package manager 管理安装包的，如何安装包如何管理依赖
// package.json  npm init -y

// 版本的号的问题 major minor patch (版本号会和git tag 有关联)  标识符号 ^ ~ >=

// MIT开源的

// 安装模块的问题  全局模块 (只能在命令行中使用)  局部模块 (在项目中使用的)
// npm install http-server -g 只能在命令行中使用
// 在本地写全局模块 可以通过npm link将项目放到 全局的模块下
// 默认运行的入口必有有头， 无论mac和windows 头都是一致的

// 局部模块 (开发依赖) （生产依赖）
// 构建工具和转义工具都属于开发依赖 --save-dev / -D
// 生产依赖 开发上线都需要的模块 不加后缀即可

// npm install 安装相关的依赖 --production 只安装生产依赖（一般不会单独安装生产依赖）

// dependencies
// devDependencies
// peerDependencies 同等依赖会自动也帮你装上去
// optionDependencies
// bundledDependencies

// 开发的时候 我们通常只区分  dependencies  devDependencies

// 安装的过程中 可以保证所有的版本一致 package-lock.json

// ^2.0.0 告诉它大版本是2，小版本 只能比2.0.0高  2.2.1
// ~1.3.4 大版本是1.3 其他小版本可以升级   1.3.5
// >=2.1.1  2.2.2
// <=2.1.1
// 1.0.0 ~ 2.0.0

// 1.0.0-alpha.3  1.0.0-beta.3  1.0.0-rc.3

// npm run 命令可以执行对应的脚本
// 而且全局模块如果安装到本地 会生成node_modules/.bin中的对应命令
// 当我们执行 npm run 的时候 会将node_modules/.bin目录放到path中（临时了），这样执行就可以正常运行了
// npx mime (如果没有这个包会安装)
// npx 不能保留命令，开发的时候不方便
